package com.myapp.struts.action;

import com.myapp.hibernate.model.Boxeador;
import com.myapp.hibernate.model.Combate;
import com.myapp.hibernate.model.MuestraCombate;
import com.myapp.hibernate.util.BoxeadorUtil;
import com.myapp.hibernate.util.CombateUtil;
import com.myapp.hibernate.util.EstadioUtil;
import com.myapp.struts.form.CombatesForm;
import com.myapp.util.Fecha;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class SeccionCombatesAction extends org.apache.struts.action.Action {

    private static final String SUCCESS = "success";

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        CombatesForm formulario = (CombatesForm) form;
        CombateUtil combateUtil = new CombateUtil();
        BoxeadorUtil boxeadorUtil = new BoxeadorUtil();
        EstadioUtil estadioUtil = new EstadioUtil();


        Calendar hoy = new GregorianCalendar();
        String cadenaHoy = "";
        cadenaHoy += hoy.get(Calendar.YEAR) + "-" + Fecha.obtenerMesReal(hoy.get(Calendar.MONTH)) + "-" + hoy.get(Calendar.DAY_OF_MONTH);

        ArrayList<Combate> combatesModificables = combateUtil.obtenerListaCombatesAnteriores(cadenaHoy);
        ArrayList<Combate> combatesNoModificables = combateUtil.obtenerListaCombatesPosteriores(cadenaHoy);

        ArrayList<MuestraCombate> listadoCombates = new ArrayList<MuestraCombate>();
        ArrayList<MuestraCombate> listadoCombates2 = new ArrayList<MuestraCombate>();
        Boxeador boxeadorAuxiliar;
        MuestraCombate mc;
                
        for (Combate c : combatesModificables) {
            mc = new MuestraCombate();
            boxeadorAuxiliar = boxeadorUtil.obtenerBoxeador(c.getIdBoxeador1());
            mc.setNombreBoxeador1(boxeadorAuxiliar.getNombre() + " " + boxeadorAuxiliar.getApellidos());
            boxeadorAuxiliar = boxeadorUtil.obtenerBoxeador(c.getIdBoxeador2());
            mc.setNombreBoxeador2(boxeadorAuxiliar.getNombre() + " " + boxeadorAuxiliar.getApellidos());
            mc.setEstadio(estadioUtil.obtenerEstadio(c.getIdEstadio()).getNombre());
            mc.setFecha(c.getFecha());
            mc.setIdCombate(c.getIdCombate());

            listadoCombates.add(mc);
        }
        
        for (Combate c : combatesNoModificables) {
            mc = new MuestraCombate();
            boxeadorAuxiliar = boxeadorUtil.obtenerBoxeador(c.getIdBoxeador1());
            mc.setNombreBoxeador1(boxeadorAuxiliar.getNombre() + " " + boxeadorAuxiliar.getApellidos());
            boxeadorAuxiliar = boxeadorUtil.obtenerBoxeador(c.getIdBoxeador2());
            mc.setNombreBoxeador2(boxeadorAuxiliar.getNombre() + " " + boxeadorAuxiliar.getApellidos());
            mc.setEstadio(estadioUtil.obtenerEstadio(c.getIdEstadio()).getNombre());
            mc.setFecha(c.getFecha());
            mc.setIdCombate(c.getIdCombate());

            listadoCombates2.add(mc);
        }

        formulario.setListadoCombates(listadoCombates);
        formulario.setListadoCombatesNoModificables(listadoCombates2);

        return mapping.findForward(SUCCESS);
    }
}
